package it.controllocredito.frontend.fragments;

import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.List;

import it.controllocredito.R;
import it.controllocredito.backend.persistence.CalllogPersistenceManager;
import it.controllocredito.backend.persistence.bean.RegistroChiamate;
import it.controllocredito.backend.phone.calllog.ManagerCallLogHandler;
import it.controllocredito.frontend.activities.DatePickerDialogFragment;
import it.controllocredito.frontend.util.RegistroChiamateArrayAdapter;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.provider.CallLog;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;

public class RegistroChiamateTabFragment extends Fragment {

	private static final String log_class_name = "RegistroChiamateTabFragment";

	int mDay = 01;

	int mMonth = 01;

	int mYear = 1900;

	CheckBox checkSetDataAbilitata;


	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup group,
			Bundle saved) {
		return inflater.inflate(R.layout.registro_chiamate_activity, group,
				false);
	}

	@Override
	public void onActivityCreated(Bundle savedInstanceState) {

		/** Getting an instance of Set Date button */

		final Button buttonDate = (Button) getView().findViewById(
				R.id.btnSetData);

		checkSetDataAbilitata = (CheckBox) getView().findViewById(
				R.id.checkSetData);

		checkSetDataAbilitata.setChecked(false);

		buttonDate.setEnabled(checkSetDataAbilitata.isChecked());

		checkSetDataAbilitata.setOnClickListener(new OnClickListener()

		{

			@Override
			public void onClick(View v)

			{

				buttonDate.setEnabled(checkSetDataAbilitata.isChecked());

			}

		});

		/** Click Event Handler for button */

		OnClickListener listenerBtDate = new OnClickListener()

		{

			@Override
			public void onClick(View v)

			{

				Calendar dataOggi = Calendar.getInstance();

				mDay = dataOggi.get(Calendar.DATE);

				mMonth = dataOggi.get(Calendar.MONTH);

				mYear = dataOggi.get(Calendar.YEAR);

				/**
				 * Creating a bundle object to pass currently set date to the
				 * fragment
				 */

				Bundle b = new Bundle();

				/** Adding currently set day to bundle object */

				b.putInt("set_day", mDay);

				/** Adding currently set month to bundle object */

				b.putInt("set_month", mMonth);

				/** Adding currently set year to bundle object */

				b.putInt("set_year", mYear);

				/** Instantiating DatePickerDialogFragment */

				DatePickerDialogFragment datePicker = new DatePickerDialogFragment();

				/** Setting the bundle object on datepicker fragment */
				datePicker.setArguments(b);

				/** Getting fragment manger for this activity */

				FragmentManager fm = getFragmentManager();

				/** Starting a fragment transaction */

				FragmentTransaction ft = fm.beginTransaction();

				/** Adding the fragment object to the fragment transaction */

				ft.add(datePicker, "date_picker");

				/** Opening the DatePicker fragment */

				ft.commit();

			}

		};

		OnClickListener listenerBtConferma = new OnClickListener()

		{

			@Override
			public void onClick(View v)

			{

				CheckBox checkBoxChiamateAltro = (CheckBox) getView()
						.findViewById(R.id.checkChiamateAltro);

				CheckBox checkBoxChiamateEntrata = (CheckBox) getView()
						.findViewById(R.id.checkChiamateEntrata);

				CheckBox checkBoxChiamateSenzaRisposta = (CheckBox) getView()
						.findViewById(R.id.checkChiamateSenzaRisposta);

				CheckBox checkBoxChiamateUscita = (CheckBox) getView()
						.findViewById(R.id.checkChiamateUscita);

				TextView numeroTelefono = (TextView) getView().findViewById(
						R.id.txtNumeroTelefono);

				boolean chiamateAltro = false;

				boolean chiamateEntrata = false;

				boolean chiamateSenzaRisposta = false;

				boolean chiamateUscita = false;

				boolean[] filtroChiamate = new boolean[4];

				if (checkBoxChiamateAltro.isChecked())

				{

					chiamateAltro = true;

				}

				if (checkBoxChiamateEntrata.isChecked())

				{

					chiamateEntrata = true;

				}

				if (checkBoxChiamateSenzaRisposta.isChecked())

				{

					chiamateSenzaRisposta = true;

				}

				if (checkBoxChiamateUscita.isChecked())

				{

					chiamateUscita = true;

				}

				filtroChiamate[0] = chiamateAltro;

				filtroChiamate[CallLog.Calls.INCOMING_TYPE] = chiamateEntrata;

				filtroChiamate[CallLog.Calls.MISSED_TYPE] = chiamateSenzaRisposta;

				filtroChiamate[CallLog.Calls.OUTGOING_TYPE] = chiamateUscita;

				ManagerCallLogHandler managerCallLogHandler = new ManagerCallLogHandler(
						getActivity().getBaseContext());

				if (!numeroTelefono.getText().toString().trim().equals(""))

				{

					/*
					RegistroChiamate chiamate = managerCallLogHandler.
							.getChiamata(numeroTelefono.getText().toString(),
									new GregorianCalendar(mYear, mMonth, mDay)
											.getTime());
					*/

					TextView risultatoFinale = (TextView) getView()
							.findViewById(R.id.txtRisultatoFinale);

					/*
					long minutiTotali = chiamate.getDurataTotaleChiamate() / 60;

					long secondiAvanzati = chiamate.getDurataTotaleChiamate()
							- (minutiTotali * 60);

					*/
					/*
					long ora = minutiTotali / 60;

					long minutiAvanzati = minutiTotali - 60 * ora;

					risultatoFinale.setText(String.valueOf("HH:" + ora + " MM:"
							+ minutiAvanzati + " SS:" + secondiAvanzati
							+ ". Minuti totali: " + minutiTotali));
							*/

				}

				else

				{

					/*
					BeanChiamateNumero chiamate = managerCallLogHandler
							.getChiamata(new GregorianCalendar(mYear, mMonth,
									mDay).getTime());

					 */
					TextView risultatoFinale = (TextView) getView()
							.findViewById(R.id.txtRisultatoFinale);

					/*
					long minutiTotali = chiamate.getDurataTotaleChiamate() / 60;

					long secondiAvanzati = chiamate.getDurataTotaleChiamate()
							- (minutiTotali * 60);
							

					long ora = minutiTotali / 60;

					long minutiAvanzati = minutiTotali - 60 * ora;

					risultatoFinale.setText(String.valueOf("HH:" + ora + " MM:"
							+ minutiAvanzati + " SS:" + secondiAvanzati
							+ ". Minuti totali: " + minutiTotali));
							*/

				}

			}

		};

		/** Setting click event listener for the button */

		buttonDate.setOnClickListener(listenerBtDate);

		Button buttonCalcolo = (Button) getView().findViewById(R.id.btnCalcolo);

		buttonCalcolo.setOnClickListener(listenerBtConferma);

	}

}
